Desenvolvimento Multicamadas em Csharp (C#(csharp)) - Parte 2 - Exemplo prático [Camada Intermediária]
A camada intermediária implementa a lógica de negócio e a lógica do controlador. Essa camada atua como intermediário entre os dados da camada de apresentação e os clientes do aplicativo. A lógica do controlador processa os pedidos do cliente e recupera do banco de dados.
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
st1\:*{behavior:url(#ieooui) }

Figura 1 - Observe Camada 2.1
Para que possa ser organizado e visualizado o código nas diferentes camadas, adicione a este projeto duas novas pastas chamadas: “Camada Intermediaria” e “Camada Apresentacao”. Expanda a pasta “Camada Intermediaria” e crie duas novas pastas chamadas respectivamente Logica Controlador e Logica Negocios.

Vamos ao código da Classe de Dados, “clsDados.cs”. Classe genérica que é utilizada para fazer a interface entre as classes contidas na lógica de negócios e a camada de dados. Nela pode-se realizar as operações básicas de banco de dados, como: inclusão, alteração, consulta e exclusão.

2) Digitar o código abaixo na classe “clsDados.cs”.Dê um duplo clique sobre o nome do arquivo e digite. Se preferir, é claro, copie.
Desenvolvendo uma aplicação Multicamadas para Windows em C#
Parte 2 )Camada Intermediária: Lógica do Controlador
Introdução
Este artigo é o segundo de uma série de sete artigos que apresentam um exemplo prático e simples abordando o desenvolvimento em camadas em C#, sabemos que a programação orientada a objetos (POO) possibilita uma abordagem simples para a utilização de dados usando objetos.
No artigo anterior foi apresentado um cenário para o desenvolvimento da aplicação e criado o Banco de Dados com as respectivas tabelas e o mapeamento Entidade Relacionamento entre elas.
Neste artigo será apresentada a classes da camada “2 – Camada Intermediaria” que representa a lógica do controlador, classe essa que faz a interface entre a lógica de negócio e os dados no banco de dados.

Figura 1 - Observe Camada 2.1
Os métodos da lógica do controlador devem assegurar a confiabilidade dos dados antes que o servidor de Banco de Dados atualize ou exiba as informações ao cliente do aplicativo (camada de apresentação).
Sabe-se que de acordo com as necessidades atuais das empresas e alterações constantes na legislação e evidentemente nos aplicativos, o modelo de desenvolvimento em várias camadas, com a utilização de classes com finalidades específicas, facilitam a atualização das aplicações e também permitem o reuso do código.
2 – Camada Intermediaria
Vamos começar organizando o projeto proposto. Para isso abra inicie um novo projeto em Visual C# - Windows Application, veja Figura 2 - New Project. Dê o nome para esse projeto de Seguros_OO e clique em OK.

Figura 2 - New Project
Para que possa ser organizado e visualizado o código nas diferentes camadas, adicione a este projeto duas novas pastas chamadas: “Camada Intermediaria” e “Camada Apresentacao”. Expanda a pasta “Camada Intermediaria” e crie duas novas pastas chamadas respectivamente Logica Controlador e Logica Negocios.
Para criar, clique com o botão direito do mouse sobre a solução, selecione Add New Folder. Dê os nomes conforme acima, ao final você terá:

Vamos adicionar a primeira classe, que será responsável pelo controle dos dados. Essa classe fará parte da Lógica do Controlador.

Figura 3 - Pastas
Vamos adicionar a primeira classe, que será responsável pelo controle dos dados. Essa classe fará parte da Lógica do Controlador.
Chamaremos essa classe de “clsDados.vb”.
1) Clique com o botão direito sobre “Logica Controlador” e selecione Add .. Class .. Dê o nome de “clsDados.cs” para essa classe. Conforme figura.

Figura 4 - Classe clsDados.cs
Vamos ao código da Classe de Dados, “clsDados.cs”. Classe genérica que é utilizada para fazer a interface entre as classes contidas na lógica de negócios e a camada de dados. Nela pode-se realizar as operações básicas de banco de dados, como: inclusão, alteração, consulta e exclusão.
Revisando: A orientação a objetos usa classes para encapsular variáveis de instância (dados) e métodos (comportamentos).
Estrutura da classe: clsDados

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace Seguros_OO.Camada_Intermediaria.Logica_Negocios
{
class clsDados
{
// Adapte a string de acordo com sua conexão.
string conexao = "Data Source=(local);Initial Catalog=seguros;Integrated Security=True";
//Classe para Abrir o Banco de Dados
private SqlConnection AbrirBanco()
{
SqlConnection cn = new SqlConnection(conexao);
cn.Open();
return cn;
}
//Classe para Fechar o Banco de Dados
public void FecharBanco(SqlConnection cn)
{
if (cn.State==ConnectionState.Open)
cn.Close();
}
//Classe para execução de comando
public void ExecutarComando(string strQuery)
{
SqlConnection cn = new SqlConnection();
try
{
cn = AbrirBanco();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strQuery.ToString();
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
FecharBanco(cn);
}
}
//Classe que retorna um objeto DataSet
public DataSet RetornarDataSet(string strQuery)
{
SqlConnection cn = new SqlConnection();
try
{
cn = AbrirBanco();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strQuery.ToString();
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
cmd.ExecuteNonQuery();
/* Declarado um dataadapter e um dataset
passar o comando para o da (SqlDataAdapter) e
carregar o dataset com resultado da busca */
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand= cmd;
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
FecharBanco(cn);
}
}
//Classe para retornar um DataReader()
public SqlDataReader RetornarDataReader(string strQuery)
{
SqlConnection cn = new SqlConnection();
try
{
cn = AbrirBanco();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strQuery.ToString();
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
return cmd.ExecuteReader();
}
catch (Exception ex)
{
throw ex;
}
finally
{
FecharBanco(cn);
}
}
//Classe para retornar um Id Numérico
public int RetornarIdNumerico(string strQuery)
{
SqlConnection cn = new SqlConnection();
try
{
cn = AbrirBanco();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strQuery.ToString();
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
SqlDataReader dr = cmd.ExecuteReader();
int codigo;
if (dr.Read())
codigo = Convert.ToInt16(dr[0]) + 1;
else
codigo = 1;
return codigo;
}
catch (Exception ex)
{
throw ex;
}
finally
{
FecharBanco(cn);
}
}
}
}
Conclusão
Nesse artigo foi apresentado a classe da camada “2 – Camada Intermediaria” que representa a lógica do controlador, classe essa que faz a interface entre a lógica de negócio e os dados no banco de dados. No próximo artigo será apresentado as classes que compõem a lógica de negócio, classes que possuem uma interface com a apresentada agora.
Qualquer dúvida quanto a esse artigo entre em contato pelo e-mail: professormoraes_arroba_gmail.com.
Um grande abraço e até o próximo artigo.

2 COMENTÁRIOS
Ricardo
Etou seguindo os passos do exemplo mais esta dando erro na conecção com o Banco.
"An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)". Ja verifiquie acesso ao banco, senha, e criei o banco com e scritp que esta no passo 01.
[há +1 ano] -
Responder

Ramon Augusto Marinho
Caro Professor,
Primeiro venho parabeniza-lo pelo trabalho.
Segundo gostaria de esclarecer um duvida neste segundo artigo.
Quando o Sr. manda criar uma classe de dados e existe o código da mesma, percebi que:
O Sr. diz: " vamos adicionar a primeira classe, que será responsável pelo controle dos dados. essa classe fará parte da lógica do controlador. chamaremos essa classe de “clsdados.vb”.
1) clique com o botão direito sobre “logica controlador” e selecione add .. class .. dê o nome de “clsdados.cs” para essa classe. conforme figura. "
Porém mais abaixo no código o Sr. informa o seguinte: " namespace seguros_oo.camada_intermediaria.logica_negocios "
Sendo assim gostaria de saber se a classe vai ser criada em Lógica do Controlodor ou Lógica de Negocio.
Obrigado!
Alexsander Marinho
Ps.: Me desculpe algo, pois sou novoto em programação.
[há +1 ano] -
Responder
Desenvolvimento Multicamadas em Csharp (C#(csharp)) - Parte 5 - Exemplo prático [Classes Auxiliares]
[Este post ainda não foi associado a uma sequência]
Você está em:
canal .net
Marcos Roberto De Moraes
Space do autor
Mestre em Educação pela UNISAL.
Especialista em Administração de Sistemas de Informação pela Universidade Federal de Lavras-MG (UFLA).
Licenciado pleno em informática pela Universidade Metodista de Piracicaba (UNIMEP).
Graduado em Tecnologia em Processamento de Dados pela Unipinhal.
...
Especialista em Administração de Sistemas de Informação pela Universidade Federal de Lavras-MG (UFLA).
Licenciado pleno em informática pela Universidade Metodista de Piracicaba (UNIMEP).
Graduado em Tecnologia em Processamento de Dados pela Unipinhal.
...
Space do autor



10
0
